﻿using FieldTools.Client.Entity.OneBot;
using Newtonsoft.Json;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace FieldTools.Client.Entity.OneBotManage
{
    /// <summary>
    /// 机器人返回的数据
    /// </summary>
    public class OneBotReturnInfo
    {
        /// <summary>
        /// 字段表示请求的状态。ok 表示操作成功，同时 retcode （返回码）会等于 0；async 表示请求已提交异步处理，此时 retcode 为 1，具体成功或失败将无法获知；failed 表示操作失败，此时 retcode 既不是 0 也不是 1，具体错误信息应参考 OneBot 实现的日志
        /// </summary>
        [JsonProperty("status")]
        public string? Status { get; set; }

        /// <summary>
        /// 返回代码，参考status状态积极内部实现
        /// </summary>
        [JsonProperty("retcode")]
        public int Retcode { get; set; }
        /// <summary>
        /// 为 API 返回数据的内容，对于踢人、禁言等不需要返回数据的操作，这里为 null，对于获取群成员信息这类操作，这里为所获取的数据的对象，具体的数据内容将会在相应的 API 描述中给出。注意，异步版本的 API，data 永远是 null，即使其相应的同步接口本身是有数据
        /// </summary>
        [JsonProperty("data")]
        public MessageReturnData? Data { get; set; }
    }

    public class MessageReturnData
    {
        /// <summary>
        /// 消息id
        /// </summary>
        [JsonProperty("message_id")]
        public string? MessageId { get; set; }
        /// <summary>
        /// 发送时间，获取消息信息用
        /// </summary>
        [JsonProperty("time")]
        public int? Time { get; set; }
        /// <summary>
        /// 消息类型，private、group，获取消息信息用
        /// </summary>
        [JsonProperty("message_type")]
        public string? MessageType { get; set; }
        /// <summary>
        /// 消息真实 ID，获取消息信息用
        /// </summary>
        [JsonProperty("real_id")]
        public int RealId { get; set; }
        /// <summary>
        /// 发送人信息，获取消息信息用
        /// </summary>
        [JsonProperty("sender")]
        public Sender? Sender { get; set; }
        /// <summary>
        /// 消息内容，获取消息信息用
        /// </summary>
        [JsonProperty("message")]
        public Message? Message { get; set; }
    }
}
